先來複習一下:
昨天做的是取得Nonce及HashID的部分,今天就來講要怎麼算IV值吧!
既然順利拿到了Nonce值後,就可以繼續加工來產出IV值,有點懶所以直接引用Spec原文:
產出 IV 值前必須要先行取得 Nonce 後才能產生,計算方式是將取得的 Nonce 值作
SHA256
加密後,再將英文轉換成大寫取字串右邊 16 碼長度
C#有提供許多原生的方法來實踐SHA256的運算(其實這邊應該是指雜湊,官方上不知為何是寫加密,兩個其實是不一樣的,打算之後再來補充)
因為方法實在太五花八門了,不過概念是雷同的,這邊使用.Net Core作為範例:
首先要引用這個命名空間:
using System.Security.Cryptography;
再來,打包成method,將來實作上會更為方便
public static string Get_SHA256_Hash( string value )
{
using var hash = SHA256.Create();
var byteArray = hash.ComputeHash( Encoding.UTF8.GetBytes( value ) );
return Convert.ToHexString( byteArray ).ToLower();
}
取得回傳值後,記得必須再用 ToUpper()
來確保轉換完的字串都是大寫喔
最後,右邊16碼長度怎麼拿呢?這真的是個超直覺的方法XD
string result = input.Right(16);
就完成拉~是不是很簡單呀?(不過整個流程概念還是挺複雜的啦..
最後結果的IV值應該會像醬"CB6FA68E42B655AB"
明天會繼續介紹如何用C#用AES CBC來無腦產生加密的內文訊息,See you!